object L3 {  
	def main (args: Array[String]) {
		// Expressao e memoria para teste
		val ex:Expr = Sum(Sum(N(5),N(10)), Sum(N(10),N(100)))
		val sigma: List[(String,Int)] = List(("l1",5), ("l2",7))
		val gamma: List[(String,Tipo)] = List(("x",Inteiro()), ("y", Inteiro()))
		val interpretador = new L3Interpreter()
		val tipo = interpretador.typecheck(ex,gamma)
		val res = interpretador.eval(ex,sigma)
  
		println()
		println("Expressao L3: " + ex)
		println()
		println("Tipo: " + tipo)
  
//		res match {
//		case Some((exp_final, sigma_final)) =>
//		println("Resultado da avaliacao de (5 + 10) + (10 + 100): " + exp_final)
//		println(sigma_final)
//		}
  
	}
 }
